package com.sunxd.rule.judge;


import com.sunxd.rule.judge.beans.param.Condition;

/**
 * Description: 条件处理帮助
 * Author: support 9
 * Date: 2018/07/02
 *
 * left :  当前值（实际值）
 * right:  配置的值
 */
public interface ConditionJudge {

    /**
     * 大于
     */
    Boolean gt(Object left, Object right);

    /**
     * 小于
     */
    Boolean lt(Object left, Object right);

    /**
     * 等于
     */
    Boolean eq(Object left, Object right);

    /**
     * 在。。。中
     */
    Boolean in(Object left, Object right);

    Boolean invoke(Condition condition);



    // ------------基于上面做的扩展--------
    /**
     * 大于等于
     */
    default Boolean gte(Object left, Object right){
        return gt(left,right) || eq(left, right);
    }

    /**
     * 小于等于
     */
    default Boolean lte(Object left, Object right){
        return lt(left,right) || eq(left, right);
    }


    String getClassType();

}
